package com.simple.orm.agreement.annotation;

import com.simple.orm.agreement.process.ReadProcess;
import com.simple.orm.agreement.process.WriteProcess;
import com.simple.orm.agreement.process.impl.DefaultReadProcess;
import com.simple.orm.agreement.process.impl.DefaultWriteProcess;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface AgreementProcess {

    /**
     * 被标记的类，若需要解析，则会使用此变量标记的类处理，不指定时，使用DefaultReadProcess处理
     *
     * @return 协议解析器
     */
    Class<? extends ReadProcess> readProcess() default DefaultReadProcess.class;

    /**
     * 被标记的类，若需要序列化，则会使用此变量标记的类处理，不指定时，使用DefaultWriteProcess处理
     *
     * @return 对象编码器
     */
    Class<? extends WriteProcess> writeProcess() default DefaultWriteProcess.class;
}
